<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>es</title>
</head>
<body>
   <h1>es重点学习内容</h1>
</body>
<script>
    //1.0 let 对比var
    // var声明的，在全局范围内都有效，
    // let声明的变量仅在块级作用域内有 不存在变量提升 暂时性死区  不允许重复

    for (var i = 0; i < 10; i++) {
        var a = "a";
       let b = "b";
    }
    console.log(a);
    // console.log(b);
    // 暂时性死区
    var tmp = 123;
    if (true) {
        tmp = 'abc'; // ReferenceError
        // let tmp;
    }
   //2.0const声明一个只读的常量。一旦声明，常量的值就不能改变。

    // 3.0 声明变量方式  变量的解构赋值
    let [d, b, c] = [1,2,3];
    console.log(d,b,c);

    let [a, ...b] = [1, 2, 3];
    //a = 1
    //b = [2, 3]
    let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
    // foo = 'aaa'
    // bar = 'bbb'

    let jsonData = {
        id: 42,
        status: "OK",
        data: [867, 5309]
    };

    let { id, status, data: number } = jsonData;

    // 4.0 repeat方法返回一个新字符串，表示将原字符串重复n次。
    // 参数如果是小数，会被取整。 负数或者Infinity，会报错。
    'x'.repeat(3) // "xxx"

    // 5.0 padStart()，padEnd()
    // 字符串补全长度功能，padStart()用于头部补全，padEnd()用于尾部补全。
     'x'.padStart(5, 'ab') // 'ababx'
    //参数：第一个参数用来指定字符串的最小长度，第二个参数是用来补全的字符串。
    //如果原字符串的长度，等于或大于指定的最小长度，则返回原字符串。

    'xxx'.padStart(2, 'ab') // 'xxx'

    // 5.0 Math  Number

    //Array.from()

    let arrayLike = {
        '0':'a',
        '1':'b',
        '2':'c',
        length:3
    };
    //ES5写法
    var arr1 = [].slice.call(arrayLike);
    //ES6写法
    let arr2 = Array.from(arrayLike);
    console.log(arr1);
    console.log(arr2);

    // 6.0箭头函数
    var sum = (num1,num2) => num1 + num2;
    //等同于
    var sum = function(num1,num2){return num1 + num2}

    var sum = (num1, num2) => { return num1 + num2; }

    // 数组遍历
    let arr = ["a","b","c","d","e"];
    arr.map(v=>{
        console.log(v);
    })
</script>
</html>